#include "comm.hpp"

int main()
{
    // 创建共享内存，并获取其shmid
    key_t key = ftok(PATHNAME, PROJ_ID);
    int shmid = shmget(key, 4068, IPC_CREAT | IPC_EXCL | 0666);
    if (shmid == -1)
    {
        perror("shmget");
        return -1;
    }
    printf("创建共享内存成功\n");

    // 将共享内存段映射到进程虚拟地址空间，并返回映射的起始虚拟地址
    void *pa = shmat(shmid, NULL, 0);

    // 向共享内存写入内容（直接用指针操作即可，非常方便）
    int i = 0;
    while (i < 10)
    {
        ((char *)pa)[i] = 'a' + i;
        i++;
    }
    sleep(20); // 预留充足时间，等待另一进程读取完server进程写入共享内存的内容，再关闭共享内存

    // 清除共享内存段与进程虚拟地址空间的映射关系
    shmdt(pa);

    // 删除共享内存
    shmctl(shmid, IPC_RMID, nullptr);
    return 0;
}

